/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package workstationbookerweb;

import Fachada.Fachada;
import Singletons.Mensajes;
import VO.EdificioVO;
import VO.EstacionTrabajoVO;
import VO.SalaVO;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.Label;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.Option;
import java.util.ArrayList;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import oracle.toplink.essentials.exceptions.DatabaseException;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @version ReservarEstacion.java
 * @version Created on 17/05/2011, 06:35:15 PM
 * @author julian Peña
 */

public class ReservarEstacion extends AbstractPageBean {

    private Fachada fachada;
    ArrayList<SalaVO> listaSalas;
    ArrayList<EstacionTrabajoVO> listaEstaciones;
    private Button[] estaciones; // = new Button[numeroEstaciones];
    private int estacionSeleccionada = -1;
    ArrayList<Option> listaOpcionesEdificios;
    ArrayList<Option> listaOpcionesSalas;

    public ArrayList<Option> getListaOpcionesEdificios() {
        return listaOpcionesEdificios;
    }

    public void setListaOpcionesEdificios(ArrayList<Option> listaOpcionesEdificios) {
        this.listaOpcionesEdificios = listaOpcionesEdificios;
    }

    public ArrayList<Option> getListaOpcionesSalas() {
        return listaOpcionesSalas;
    }

    public void setListaOpcionesSalas(ArrayList<Option> listaOpcionesSalas) {
        this.listaOpcionesSalas = listaOpcionesSalas;
    }

    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
        try {
            Inicializar();
        } catch (DatabaseException e) {
            mensajeL.setText(e.getMessage());
            return;
        }
    }

    public Button getEstacion1() {
        return estacion1;
    }

    public void setEstacion1(Button estacion1) {
        this.estacion1 = estacion1;
    }

    public Button getEstacion10() {
        return estacion10;
    }

    public void setEstacion10(Button estacion10) {
        this.estacion10 = estacion10;
    }

    public Button getEstacion11() {
        return estacion11;
    }

    public void setEstacion11(Button estacion11) {
        this.estacion11 = estacion11;
    }

    public Button getEstacion12() {
        return estacion12;
    }

    public void setEstacion12(Button estacion12) {
        this.estacion12 = estacion12;
    }

    public Button getEstacion13() {
        return estacion13;
    }

    public void setEstacion13(Button estacion13) {
        this.estacion13 = estacion13;
    }

    public Button getEstacion14() {
        return estacion14;
    }

    public void setEstacion14(Button estacion14) {
        this.estacion14 = estacion14;
    }

    public Button getEstacion15() {
        return estacion15;
    }

    public void setEstacion15(Button estacion15) {
        this.estacion15 = estacion15;
    }

    public Button getEstacion16() {
        return estacion16;
    }

    public void setEstacion16(Button estacion16) {
        this.estacion16 = estacion16;
    }

    public Button getEstacion17() {
        return estacion17;
    }

    public void setEstacion17(Button estacion17) {
        this.estacion17 = estacion17;
    }

    public Button getEstacion18() {
        return estacion18;
    }

    public void setEstacion18(Button estacion18) {
        this.estacion18 = estacion18;
    }

    public Button getEstacion19() {
        return estacion19;
    }

    public void setEstacion19(Button estacion19) {
        this.estacion19 = estacion19;
    }

    public Button getEstacion2() {
        return estacion2;
    }

    public void setEstacion2(Button estacion2) {
        this.estacion2 = estacion2;
    }

    public Button getEstacion20() {
        return estacion20;
    }

    public void setEstacion20(Button estacion20) {
        this.estacion20 = estacion20;
    }

    public Button getEstacion21() {
        return estacion21;
    }

    public void setEstacion21(Button estacion21) {
        this.estacion21 = estacion21;
    }

    public Button getEstacion22() {
        return estacion22;
    }

    public void setEstacion22(Button estacion22) {
        this.estacion22 = estacion22;
    }

    public Button getEstacion23() {
        return estacion23;
    }

    public void setEstacion23(Button estacion23) {
        this.estacion23 = estacion23;
    }

    public Button getEstacion24() {
        return estacion24;
    }

    public void setEstacion24(Button estacion24) {
        this.estacion24 = estacion24;
    }

    public Button getEstacion25() {
        return estacion25;
    }

    public void setEstacion25(Button estacion25) {
        this.estacion25 = estacion25;
    }

    public Button getEstacion26() {
        return estacion26;
    }

    public void setEstacion26(Button estacion26) {
        this.estacion26 = estacion26;
    }

    public Button getEstacion27() {
        return estacion27;
    }

    public void setEstacion27(Button estacion27) {
        this.estacion27 = estacion27;
    }

    public Button getEstacion28() {
        return estacion28;
    }

    public void setEstacion28(Button estacion28) {
        this.estacion28 = estacion28;
    }

    public Button getEstacion29() {
        return estacion29;
    }

    public void setEstacion29(Button estacion29) {
        this.estacion29 = estacion29;
    }

    public Button getEstacion3() {
        return estacion3;
    }

    public void setEstacion3(Button estacion3) {
        this.estacion3 = estacion3;
    }

    public Button getEstacion30() {
        return estacion30;
    }

    public void setEstacion30(Button estacion30) {
        this.estacion30 = estacion30;
    }

    public Button getEstacion31() {
        return estacion31;
    }

    public void setEstacion31(Button estacion31) {
        this.estacion31 = estacion31;
    }

    public Button getEstacion32() {
        return estacion32;
    }

    public void setEstacion32(Button estacion32) {
        this.estacion32 = estacion32;
    }

    public Button getEstacion33() {
        return estacion33;
    }

    public void setEstacion33(Button estacion33) {
        this.estacion33 = estacion33;
    }

    public Button getEstacion34() {
        return estacion34;
    }

    public void setEstacion34(Button estacion34) {
        this.estacion34 = estacion34;
    }

    public Button getEstacion35() {
        return estacion35;
    }

    public void setEstacion35(Button estacion35) {
        this.estacion35 = estacion35;
    }

    public Button getEstacion36() {
        return estacion36;
    }

    public void setEstacion36(Button estacion36) {
        this.estacion36 = estacion36;
    }

    public Button getEstacion37() {
        return estacion37;
    }

    public void setEstacion37(Button estacion37) {
        this.estacion37 = estacion37;
    }

    public Button getEstacion38() {
        return estacion38;
    }

    public void setEstacion38(Button estacion38) {
        this.estacion38 = estacion38;
    }

    public Button getEstacion39() {
        return estacion39;
    }

    public void setEstacion39(Button estacion39) {
        this.estacion39 = estacion39;
    }

    public Button getEstacion4() {
        return estacion4;
    }

    public void setEstacion4(Button estacion4) {
        this.estacion4 = estacion4;
    }

    public Button getEstacion40() {
        return estacion40;
    }

    public void setEstacion40(Button estacion40) {
        this.estacion40 = estacion40;
    }

    public Button getEstacion41() {
        return estacion41;
    }

    public void setEstacion41(Button estacion41) {
        this.estacion41 = estacion41;
    }

    public Button getEstacion42() {
        return estacion42;
    }

    public void setEstacion42(Button estacion42) {
        this.estacion42 = estacion42;
    }

    public Button getEstacion43() {
        return estacion43;
    }

    public void setEstacion43(Button estacion43) {
        this.estacion43 = estacion43;
    }

    public Button getEstacion44() {
        return estacion44;
    }

    public void setEstacion44(Button estacion44) {
        this.estacion44 = estacion44;
    }

    public Button getEstacion45() {
        return estacion45;
    }

    public void setEstacion45(Button estacion45) {
        this.estacion45 = estacion45;
    }

    public Button getEstacion46() {
        return estacion46;
    }

    public void setEstacion46(Button estacion46) {
        this.estacion46 = estacion46;
    }

    public Button getEstacion47() {
        return estacion47;
    }

    public void setEstacion47(Button estacion47) {
        this.estacion47 = estacion47;
    }

    public Button getEstacion48() {
        return estacion48;
    }

    public void setEstacion48(Button estacion48) {
        this.estacion48 = estacion48;
    }

    public Button getEstacion49() {
        return estacion49;
    }

    public void setEstacion49(Button estacion49) {
        this.estacion49 = estacion49;
    }

    public Button getEstacion5() {
        return estacion5;
    }

    public void setEstacion5(Button estacion5) {
        this.estacion5 = estacion5;
    }

    public Button getEstacion50() {
        return estacion50;
    }

    public void setEstacion50(Button estacion50) {
        this.estacion50 = estacion50;
    }

    public Button getEstacion6() {
        return estacion6;
    }

    public void setEstacion6(Button estacion6) {
        this.estacion6 = estacion6;
    }

    public Button getEstacion7() {
        return estacion7;
    }

    public void setEstacion7(Button estacion7) {
        this.estacion7 = estacion7;
    }

    public Button getEstacion8() {
        return estacion8;
    }

    public void setEstacion8(Button estacion8) {
        this.estacion8 = estacion8;
    }

    public Button getEstacion9() {
        return estacion9;
    }

    public void setEstacion9(Button estacion9) {
        this.estacion9 = estacion9;
    }
    private Button estacion1 = new Button();
    private Button estacion2 = new Button();
    private Button estacion3 = new Button();
    private Button estacion4 = new Button();
    private Button estacion5 = new Button();
    private Button estacion6 = new Button();
    private Button estacion7 = new Button();
    private Button estacion8 = new Button();
    private Button estacion9 = new Button();
    private Button estacion10 = new Button();
    private Button estacion11 = new Button();
    private Button estacion12 = new Button();
    private Button estacion13 = new Button();
    private Button estacion14 = new Button();
    private Button estacion15 = new Button();
    private Button estacion16 = new Button();
    private Button estacion17 = new Button();
    private Button estacion18 = new Button();
    private Button estacion19 = new Button();
    private Button estacion20 = new Button();
    private Button estacion21 = new Button();
    private Button estacion22 = new Button();
    private Button estacion23 = new Button();
    private Button estacion24 = new Button();
    private Button estacion25 = new Button();
    private Button estacion26 = new Button();
    private Button estacion27 = new Button();
    private Button estacion28 = new Button();
    private Button estacion29 = new Button();
    private Button estacion30 = new Button();
    private Button estacion31 = new Button();
    private Button estacion32 = new Button();
    private Button estacion33 = new Button();
    private Button estacion34 = new Button();
    private Button estacion35 = new Button();
    private Button estacion36 = new Button();
    private Button estacion37 = new Button();
    private Button estacion38 = new Button();
    private Button estacion39 = new Button();
    private Button estacion40 = new Button();
    private Button estacion41 = new Button();
    private Button estacion42 = new Button();
    private Button estacion43 = new Button();
    private Button estacion44 = new Button();
    private Button estacion45 = new Button();
    private Button estacion46 = new Button();
    private Button estacion47 = new Button();
    private Button estacion48 = new Button();
    private Button estacion49 = new Button();
    private Button estacion50 = new Button();

    private Label mensajeL = new Label();

    public Label getMensajeL() {
        return mensajeL;
    }

    public void setMensajeL(Label l) {
        this.mensajeL = l;
    }
    private DropDown listaEdificiosCB = new DropDown();

    public DropDown getListaEdificiosCB() {
        return listaEdificiosCB;
    }

    public void setListaEdificiosCB(DropDown dd) {
        this.listaEdificiosCB = dd;
    }
    private DropDown listaSalaCB = new DropDown();

    public DropDown getListaSalaCB() {
        return listaSalaCB;
    }

    public void setListaSalaCB(DropDown dd) {
        this.listaSalaCB = dd;
    }
    private Calendar fechaCalendar = new Calendar();

    public Calendar getFechaCalendar() {
        return fechaCalendar;
    }

    public void setFechaCalendar(Calendar c) {
        this.fechaCalendar = c;
    }
    private TextField horaInicioTF = new TextField();

    public TextField getHoraInicioTF() {
        return horaInicioTF;
    }

    public void setHoraInicioTF(TextField tf) {
        this.horaInicioTF = tf;
    }
    private TextField horaFinTF = new TextField();

    public TextField getHoraFinTF() {
        return horaFinTF;
    }

    public void setHoraFinTF(TextField tf) {
        this.horaFinTF = tf;
    }

    // </editor-fold>

    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public ReservarEstacion() {
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here
        
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("ReservarEstacion2 Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    public String reservarB_action() {
        // TODO: Replace with your code
        return null;
    }

    private void Inicializar(){
        estaciones = new Button[] {estacion1, estacion2, estacion3, estacion4, estacion5,
            estacion6, estacion7, estacion8, estacion9, estacion10, estacion11, estacion12,
            estacion13, estacion14, estacion15, estacion16, estacion17, estacion18, estacion19,
            estacion20, estacion21, estacion22, estacion23, estacion24, estacion25, estacion26,
            estacion27, estacion28, estacion29, estacion30, estacion31, estacion32, estacion33,
            estacion34, estacion35, estacion36, estacion37, estacion38, estacion39, estacion40,
            estacion41, estacion42, estacion43, estacion44, estacion45, estacion46, estacion47,
            estacion48, estacion49, estacion50};
        
        fachada = Fachada.getInstance();
        listaSalas = fachada.leerSalas();
        if(listaSalas==null){
            mensajeL.setText(Mensajes.ERROR_CONEXION_BD);
            return;
        }
        ArrayList<EdificioVO> listaEdificios= fachada.leerEdificios();
        listaOpcionesEdificios = new ArrayList<Option>();
        if(listaEdificios==null){
            mensajeL.setText(Mensajes.ERROR_CONEXION_BD);
            return;
        }
        for (EdificioVO u:listaEdificios){
            listaOpcionesEdificios.add(new Option(u));
        }

        listaOpcionesSalas = new ArrayList<Option>();
        listaOpcionesSalas.add(new Option(Mensajes.SELECCIONE));
        fechaCalendar.resetValue();
        horaInicioTF.setText(" ");
        horaFinTF.setText(" ");
        mensajeL.setText(" ");
    }

    public String verB_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return null;
    }

    public String salirB_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return "pantalla usuario";
    }

    public void listaEdificiosCB_processValueChange(ValueChangeEvent vce) {
        Option op = (Option)listaEdificiosCB.getSelected();
        Object o = op.getValue();
        if (o==Mensajes.SELECCIONE)
            return;
        mensajeL.setText("");
        EdificioVO edificioSeleccionado = (EdificioVO)op.getValue();
        listaOpcionesSalas = new ArrayList<Option>();
        listaOpcionesSalas.add(new Option(Mensajes.SELECCIONE));
        for (SalaVO u : listaSalas){
            if (edificioSeleccionado.getNombre().equals(u.getEdificio()))
                listaOpcionesSalas.add(new Option(u));
        }
    }

    public void listaSalaCB_processValueChange(ValueChangeEvent event) {
        Option op = (Option)listaSalaCB.getSelected();
        Object o = op.getValue();
        if (o==Mensajes.SELECCIONE)
            return;
        mensajeL.setText("");
        inicializarSala((SalaVO)op.getValue());
    }

    private void inicializarSala(SalaVO svo) {

        throw new UnsupportedOperationException("Not yet implemented");
    }
    public String estacion1_action() {
        accionBotones(1);
        return null;
    }

    public String estacion2_action() {
        accionBotones(2);
        return null;
    }

    public String estacion3_action() {
        accionBotones(3);
        return null;
    }

    public String estacion4_action() {
        accionBotones(4);
        return null;
    }

    public String estacion5_action() {
        accionBotones(5);
        return null;
    }

    public String estacion6_action() {
        accionBotones(6);
        return null;
    }

    public String estacion7_action() {
        accionBotones(7);
        return null;
    }

    public String estacion8_action() {
        accionBotones(8);
        return null;
    }

    public String estacion9_action() {
        accionBotones(9);
        return null;
    }

    public String estacion10_action() {
        accionBotones(10);
        return null;
    }

    public String estacion11_action() {
        accionBotones(11);
        return null;
    }

    public String estacion12_action() {
        accionBotones(12);
        return null;
    }

    public String estacion13_action() {
        accionBotones(13);
        return null;
    }

    public String estacion14_action() {
        accionBotones(14);
        return null;
    }

    public String estacion15_action() {
        accionBotones(15);
        return null;
    }

    public String estacion16_action() {
        accionBotones(16);
        return null;
    }

    public String estacion17_action() {
        accionBotones(17);
        return null;
    }

    public String estacion18_action() {
        accionBotones(18);
        return null;
    }

    public String estacion19_action() {
        accionBotones(19);
        return null;
    }

    public String estacion20_action() {
        accionBotones(20);
        return null;
    }

    public String estacion21_action() {
        accionBotones(21);
        return null;
    }

    public String estacion22_action() {
        accionBotones(22);
        return null;
    }

    public String estacion23_action() {
        accionBotones(23);
        return null;
    }

    public String estacion24_action() {
        accionBotones(24);
        return null;
    }

    public String estacion25_action() {
        accionBotones(25);
        return null;
    }

    public String estacion26_action() {
        accionBotones(26);
        return null;
    }

    public String estacion27_action() {
        accionBotones(27);
        return null;
    }

    public String estacion28_action() {
        accionBotones(28);
        return null;
    }

    public String estacion29_action() {
        accionBotones(29);
        return null;
    }

    public String estacion30_action() {
        accionBotones(30);
        return null;
    }

    public String estacion31_action() {
        accionBotones(31);
        return null;
    }

    public String estacion32_action() {
        accionBotones(32);
        return null;
    }

    public String estacion33_action() {
        accionBotones(33);
        return null;
    }

    public String estacion34_action() {
        accionBotones(34);
        return null;
    }

    public String estacion35_action() {
        accionBotones(35);
        return null;
    }

    public String estacion36_action() {
        accionBotones(36);
        return null;
    }

    public String estacion37_action() {
        accionBotones(37);
        return null;
    }

    public String estacion38_action() {
        accionBotones(38);
        return null;
    }

    public String estacion39_action() {
        accionBotones(39);
        return null;
    }

    public String estacion40_action() {
        accionBotones(40);
        return null;
    }

    public String estacion41_action() {
        accionBotones(41);
        return null;
    }

    public String estacion42_action() {
        accionBotones(42);
        return null;
    }

    public String estacion43_action() {
        accionBotones(43);
        return null;
    }

    public String estacion44_action() {
        accionBotones(44);
        return null;
    }

    public String estacion45_action() {
        accionBotones(45);
        return null;
    }

    public String estacion46_action() {
        accionBotones(46);
        return null;
    }

    public String estacion47_action() {
        accionBotones(47);
        return null;
    }

    public String estacion48_action() {
        accionBotones(48);
        return null;
    }

    public String estacion49_action() {
        accionBotones(49);
        return null;
    }

    public String estacion50_action() {
        accionBotones(50);
        return null;
    }
private void accionBotones(int i){
        if (estacionSeleccionada != -1)
            estaciones[estacionSeleccionada].setText("");
        estacionSeleccionada = i-1;
        estaciones[estacionSeleccionada].setText("+");
        setValue("#{sessionScope.estacionSeleccionada}", new Integer(estacionSeleccionada));
    }

    public void listaEdificiosCB_validate(FacesContext fc, UIComponent uic, Object o) {
        
    }
}

